/************************************************************************
 * Este archivo, representa la interfaz de la eliminacion de un usuario
 * junto con las acciones asociadas a los eventos de cada componente
 * 
 * @system: veco-system
 * @description: Sistema de control vehicular
 * @version: 1.0
 * @Copyright © 2013 
 * 
 * @authores:
 * 
 *      > Alberione, Fernando    <falberione_037@gmail.com>
 * 
 *      > Boretto, Martin        <martinboretto@gmail.com>
 * 
 *      > Lenarduzzi, Federico   <fedeatenas@gmail.com>
 * 
 *      > Ocampo, Emanuel        <eocampo86@gmail.com>
 *
 *************************************************************************/

package Interfaces;

import SistemaCocheras.manejadorUsuarioAdmin;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.sql.Connection;
import java.sql.SQLException;
import javax.swing.JOptionPane;


public class removerUsuario extends javax.swing.JFrame {

    private Connection conexion = null;

    
    // ---------------------------------------------------------
    // ------- Seccion de constructores de la clase
    // ---------------------------------------------------------    

    /**
     * Constructor vacio
     */     
    public removerUsuario() {
        initComponents();
        centrarJFrame();
    }// Fin constructor

    
    /**
     * Constructor NO vacio
     * @param c Representa la conexion de la base de datos
     */    
    public removerUsuario(Connection c) {
        this.conexion = c;
        initComponents();
        centrarJFrame();
    }// Fin constructor

    
    
    // ---------------------------------------------------------
    // ------- Seccion de metodos publicos 
    // ---------------------------------------------------------  
    
    /**
     * Metodo encargado de levantar una instancia de la clase
     * @param args 
     */    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new removerUsuario().setVisible(true);
            }
        });
    }// Fin main
    
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        campoTextoDNIUsuario = new javax.swing.JTextField();
        botonAceptar = new javax.swing.JButton();
        botonRemoverOtroU = new javax.swing.JButton();
        botonCancelar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("B&B - Eliminar usuario");

        jLabel1.setText("DNI del Usuario (*) :");

        botonAceptar.setText("Aceptar");
        botonAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAceptarActionPerformed(evt);
            }
        });

        botonRemoverOtroU.setText("Remover Otro Usuario");
        botonRemoverOtroU.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonRemoverOtroUActionPerformed(evt);
            }
        });

        botonCancelar.setText("Cancelar");
        botonCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCancelarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(campoTextoDNIUsuario, javax.swing.GroupLayout.DEFAULT_SIZE, 337, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(botonAceptar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGap(18, 18, 18)
                        .addComponent(botonRemoverOtroU)
                        .addGap(18, 18, 18)
                        .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {botonAceptar, botonCancelar, botonRemoverOtroU});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(campoTextoDNIUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonRemoverOtroU)
                    .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {botonAceptar, botonCancelar, botonRemoverOtroU});

        pack();
    }// </editor-fold>//GEN-END:initComponents

    
    // ---------------------------------------------------------
    // ------- Seccion de metodos privados 
    // ---------------------------------------------------------  
    
    /**
     * Metodo encargado de centrar la interfaz en la pantalla
     */    
    private void centrarJFrame(){
        Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frame = this.getSize();
        this.setLocation((pantalla.width-frame.width)/2, (pantalla.height-frame.height)/2);
    }// Fin centrarJFrame
    
    
    /**
     * Metodo encargado de cerrar la interfaz a traves del boton cancelar
     * @param evt Representa el evento del click
     */
    private void botonCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCancelarActionPerformed
        this.dispose();
    }//GEN-LAST:event_botonCancelarActionPerformed

    
    /**
     * Metodo encargado de realizar lo necesario (eliminar un cliente) a partir de 
     * la accion del boton aceptar
     * @param evt Representa el evento del click
     */
    private void botonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAceptarActionPerformed
        String dniUsuario = this.campoTextoDNIUsuario.getText();
        if (!(dniUsuario.equals(""))){ // Evalua las condiciones que debe cumplir el campo DNI
            manejadorUsuarioAdmin mua = new manejadorUsuarioAdmin(this.conexion);
            try {
                if((mua.buscarUsuarioPorDni(dniUsuario)).next()) {
                    mua.eliminarUsuario(dniUsuario);
                    JOptionPane.showMessageDialog(null, " Se ha eliminado correctamente el usuario con dni:\"" + dniUsuario + "\"", " Eliminacion Satisfactoria", JOptionPane.INFORMATION_MESSAGE);
                    removerUsuario.this.dispose();
                } 
                else {
                    // En caso contrario informa que el usuario no fue cargado en el sistema
                    JOptionPane.showMessageDialog(null, " El usuario no se encuentra registrado en el sistema", "Eliminacion Fallida", JOptionPane.ERROR_MESSAGE);
                }
            } 
            catch (SQLException ex) {
                JOptionPane.showMessageDialog(null," Ha ocurrido un error interno:"+ ex, "Sistema de Cocheras B&B",JOptionPane.ERROR_MESSAGE);
            }
        }
        else{
            JOptionPane.showMessageDialog(null, " Debe rellenar correctamente todos los campos obligatorios (*) ","Eliminacion Fallida", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_botonAceptarActionPerformed

    
    /**
     * Metodo encargado de realizar lo necesario a partir de la accion del
     * boton de remover a otro cliente
     * @param evt Representa el evento del click
     */
    private void botonRemoverOtroUActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonRemoverOtroUActionPerformed
        String dniUsuario = this.campoTextoDNIUsuario.getText();
        if (!(dniUsuario.equals(""))){ 
            // Se evalua que el campo dni NO este vacio
            manejadorUsuarioAdmin mua = new manejadorUsuarioAdmin(this.conexion);
            try {
                if ((mua.buscarUsuarioPorDni(dniUsuario)).next()) {
                    // Si existe el usuario, se lo elimina
                    mua.eliminarUsuario(dniUsuario);
                    JOptionPane.showMessageDialog(null, "Se ha eliminado correctamente el usuario con dni:\"" + dniUsuario + "\"", " Eliminacion satisfactoria", JOptionPane.INFORMATION_MESSAGE);
                    removerUsuario.this.dispose();
                }
                else {
                    JOptionPane.showMessageDialog(null, "El usuario no se encuentra registrado en el sistema", "Eliminación fallida", JOptionPane.ERROR_MESSAGE);
                }
            } 
            catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Ha ocurrido un error interno al intentar eliminar el usuario", "Eliminación fallida", JOptionPane.ERROR_MESSAGE);
            }
        }
        else{
            // Campo de texto del dni vacio
            JOptionPane.showMessageDialog(null, "El campo 'dni' no puede permanecer vacío", "Eliminación fallida", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_botonRemoverOtroUActionPerformed
    

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botonAceptar;
    private javax.swing.JButton botonCancelar;
    private javax.swing.JButton botonRemoverOtroU;
    private javax.swing.JTextField campoTextoDNIUsuario;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration//GEN-END:variables

}// Fin clase removerUsuario